As is known, computer graphics processing systems process large amounts of data, including texture data, among others. A texture is a digital image, often rectangular, having a (u, v) coordinate space. The smallest addressable unit of a texture is a texel, which is assigned a specific (u, v) coordinate based on its location. In a texture mapping operation, a texture is mapped to the surface of a graphical model as the model is rendered to create a destination image. In the destination image, pixels are located at specific coordinates in the (x, y) coordinate system.
Texture data often resides in system memory, which is a shared resource. In many computer systems, other devices may attempt to access data used by the graphics processing system or utilize a shared system bus, both of which may result in increased data access time for the graphics processing system. Additionally, requests for data from system memory may take excessive amounts of time for other reasons. Accordingly, accessing system memory may have a performance inhibiting effect on graphics processing systems.
One technique for improving data accessibility is through a texture cache that is dedicated to storing texture data. The texture cache is provided texture data from the system memory before the data is required for texture processing, thereby providing the graphics system with the texture data and reducing the requirement to access system memory. This, in turn, reduces problems associated with memory latency.
However, another type of data often required for texture processing, specifically border color data, can be stored and accessed in graphics systems quite differently from the above noted texture data with the texture cache systems. Border color data is often required during texture processing during texture processing occurring in a border color mode when a texel is requested that is out of boundary. When a texture is processed, or mapped to the surface of a graphical model, the texture may not sufficiently cover a graphical model, and texture processing systems within graphics processing units must handle the mapping of texture to a graphical model at coordinates out of range of the texture with a particular (u, v) dimension. Often, a border color is required in these situations because, as is known, a particular border color may be applied to a graphical model at coordinates out of boundary of the texture itself.
An alternative example of texture processing is the application of a texture to a graphical model in a “clamp” mode. If a texture image does not span the entire model in such a mode, the texture image can be “clamped” to cause the entire polygon to be covered. As should be appreciated by a person of ordinary skill in the art, effectively, the last pixel of a texture image extends to cover the remaining surface area of the model mapped with the texture image. Or, in other words, pixels out of range of the texture image are applied with the same texture data as the edge of the texture image. A clamp operation is a known operation to a person of ordinary skill as a texture processing operation on the above mentioned out of boundary coordinates.
The application of a texture to a graphical model in a “border color” mode is an alternative example of texture processing operations. If a texture image does not span the entire model in such a mode, a border color can be applied to coordinates of the graphical model outside the range of a texture image. This is in contrast to the above “clamp” example where the texture is effectively extended over an entire graphical model for portions of the model out of range of a chosen texture image. In a “border color” mode, a constant border color may be chosen for these out of range coordinates. A border color may be chosen by a programmer, an automated software algorithm, or by hardware performing texture processing operations and mapped to the graphical model at coordinates out of range of the chosen texture image. It should be appreciated that there are various other such modes for texture mapping operations, including, but not limited to: a “wrap” mode, a “middle” mode, and other modes that are known in the art.
Presently, border color information for texture processing operations in “border color” mode is generally stored in a dedicated memory or cache structure located within a graphics processing unit. Such border color information is typically represented by at least sixteen border colors for each shader that is executable by a graphics processing unit. Or, in other words, for each shader that is executable in parallel in a graphics processing unit, it is generally required that at least sixteen border colors be accessible. In addition, each of the sixteen border colors can be stored in various formats for use by a texture filtering unit or filtering process. As a non-limiting example, some graphics processing units store each border color in up to twelve different formats in a border color cache or border color memory. Further, each format may require at least 128 bits of cache or memory space for storage.
As is known, texture data is a shared resource that may be required by various stages of a graphics pipeline. In addition, multiple contexts of texture data may be required by parallel executing shaders within graphics processing unit. Various stages of a graphics pipeline may perform texture processing operations and require texture data or border color information. Therefore, an on-chip cache may be employed for the caching of texture data. As the performance of computer systems and particularly graphics processing increases, chip resources, including space on a graphics processing unit or graphics processing card becomes even more of a premium. Consequently, if a graphics processing unit is capable of executing several parallel shaders, a substantial amount of cache or memory dedicated to border color storage in addition to texture data may be necessary for a graphics processing unit utilizing dedicated border color cache or memory.
Therefore, it is desired to improve processing, design, and manufacturing efficiency of graphics processing units wherever possible. As the complexity and processing capability of graphics processing units increases, the use of dedicated border color caches or memory typically employed require a considerable number of gates, communication lines and hardware cost. Therefore, a heretofore unaddressed need exist to overcome these deficiencies of the prior art.